﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using YetAnotherChat.UserManagement.Interfaces;
using YetAnotherChat.UserManagement.Models;

namespace YetAnotherChat.UnitTest.DependencyInjection
{
    internal class FakeUserRepository : IChatUserRepository
    {
        private string _singletonSignature = null;
        public string SingletonSignature
        {
            get { return _singletonSignature ?? (_singletonSignature = Guid.NewGuid().ToString()); }
            set { _singletonSignature = value; }
        }

        public BackendUser CreateBackendUser(Guid clientSiteId, string displayName, string email)
        {
            return new BackendUser() { ClientSiteId = clientSiteId, DisplayName = displayName, Email = email };
        }

        public ChatUser CreateChatUser(string displayName, string provider, string externalId)
        {
            return new ChatUser() { ExternalId = externalId, Provider = provider };
        }

        public Common.Models.UserBase Create(dynamic values)
        {
            throw new NotImplementedException();
        }

        public void Update(Common.Models.UserBase obj)
        {
            throw new NotImplementedException();
        }

        public void Delete(Common.Models.UserBase obj)
        {
            throw new NotImplementedException();
        }

        public Common.Models.UserBase Get(Guid id)
        {
            throw new NotImplementedException();
        }

        public ChatUser Create(ChatUser obj)
        {
            throw new NotImplementedException();
        }

        public void Update(ChatUser obj)
        {
            throw new NotImplementedException();
        }

        public void Delete(ChatUser obj)
        {
            throw new NotImplementedException();
        }

        public ChatUser Get(Guid id, bool enableTracking = false)
        {
            throw new NotImplementedException();
        }


        public ChatUser[] GetMany(Func<ChatUser, bool> where)
        {
            throw new NotImplementedException();
        }

        public void Commit()
        {
            throw new NotImplementedException();
        }


        public ChatUser[] GetMany(Func<ChatUser, bool> where, bool enableTracking = false)
        {
            throw new NotImplementedException();
        }
    }
}
